#ifndef __SW_QJULIA_H__
#define __SW_QJULIA_H__

#include "components/3D/sweety_3D_Engine.h"
#include "components/3D/sweety_3D_Sprite.h"
#include "components/3D/sweety_3D_Vao.h"


namespace SW
{
    class SW_API JuliaSprite : public Sprite
    {
    public:
        JuliaSprite();

        virtual ~JuliaSprite();

        void InitShaders();

        void SetSize(int w, int h);

        virtual void Render(const mat4& modelTrans) override;

    public:
        vec4 quatPt = vec4(-0.65f, 0.4f, 0.25f, 0.05f);
        vec3 diffuseColor = vec3(0.3f, 0.9f, 0.65f);

        vec3 Light = vec3(3.f, 3.f, 3.f);

        float phongMethod = 1.0f;
        float specularExponent = 15.f;
        float specularComponent = .5f;
        float normalComponent = .25f;
        float epsilon = 0.001f;

        bool isFullRender = false;
        bool useShadow = true;
        bool useAO = false;

        vec3 position = vec3(0.f);
       
        VaoClass* m_VaoPtr{ nullptr };

        GLuint  _Resolution,
            _quatPt,
            _diffuseColor,
            _phongMethod,
            _specularExponent,
            _specularComponent,
            _normalComponent,
            _isFullRender,
            _useShadow,
            _useAO,
            _matOrientation,
            _Light,
            _position,
            _epsilon;

    private:
        int mWidth{ 0 };
        int mHeight{ 0 };

        MainProgramObj m_Shader;
    };
}

#endif
